// 压缩/解压缩处理类
package com.tool;

import java.io.ByteArrayOutputStream;   
import java.io.IOException;   
import java.util.zip.Deflater;   
import java.util.zip.Inflater; 

public abstract class ZlibUtils {
	
	// 压缩
    public static byte[] compress(byte[] data) {
        byte[] output = new byte[0];

        Deflater compresser = new Deflater();   

        compresser.reset();
        compresser.setInput(data);
        compresser.finish();
        ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);
        try {
            byte[] buf = new byte[1024];   
            while (!compresser.finished()) {   
                int i = compresser.deflate(buf);   
                bos.write(buf, 0, i);   
            }   
            output = bos.toByteArray();   
        } catch (Exception e) {   
            output = data;   
            e.printStackTrace();   
        } finally {   
            try {   
                bos.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
        compresser.end();   
        return output;   
    }   

    // 解压缩  
    public static byte[] decompress(byte[] data) {   
        byte[] output = new byte[0];   

        Inflater decompresser = new Inflater();   
        decompresser.reset();   
        decompresser.setInput(data);   

        ByteArrayOutputStream o = new ByteArrayOutputStream(data.length);   
        try {   
            byte[] buf = new byte[1024];   
            while (!decompresser.finished()) {   
                int i = decompresser.inflate(buf);   
                o.write(buf, 0, i);   
            }   
            output = o.toByteArray();   
        } catch (Exception e) {   
            output = data;   
            e.printStackTrace();   
        } finally {   
            try {   
                o.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   

        decompresser.end();   
        return output;   
    } 

}
